package com.cmc.cloud.cmclink.doc.service.approvespace;

import com.cmc.cloud.cmclink.doc.vo.sovo.approvespacevo.SoApproveSpaceReqVO;
import com.cmc.cloud.cmclink.doc.vo.sovo.approvespacevo.SoApproveSpaceResVO;
import com.cmc.cloud.cmclink.doc.vo.sovo.approvespacevo.SoRejectSpaceReqVO;
import com.cmc.cloud.cmclink.doc.vo.sovo.approvespacevo.UpdateBkgVesselReqVO;
import com.cmc.cloud.cmclink.doc.vo.sovo.sovo.SoDetailRespVO;
import com.cmes.framework.common.pojo.PageResult;

/**
 * @author lzp
 */
public interface ApproveSpaceService {

    /**
     * 批舱主查询
     *
     * @param soApproveSpaceReqVO 查询请求参数
     * @return 批舱分页查询列表
     */
    PageResult<SoApproveSpaceResVO> searchSoApproveSpacePage(SoApproveSpaceReqVO soApproveSpaceReqVO);

    /**
     * 批舱详情查询
     *
     * @param id id
     * @return 批舱详情
     */
    SoDetailRespVO getDetail(Long id);

    /**
     * 改配
     *
     * @param updateBkgVesselReqVO 更新参数
     */
    void updateBkgVessel(UpdateBkgVesselReqVO updateBkgVesselReqVO);

    /**
     * 同意批舱
     *
     * @param id so_id
     */
    void approveSpace(Long id);

    /**
     * 同意批舱
     *
     * @param id so_id
     * @param soRejectSpaceReqVO 拒绝参数
     */
    void rejectSpace(Long id, SoRejectSpaceReqVO soRejectSpaceReqVO);

    /**
     * 舱位待定
     *
     * @param id so_id
     * @param soRejectSpaceReqVO pending参数
     */
    void pendingSpace(Long id, SoRejectSpaceReqVO soRejectSpaceReqVO);
}
